Version Order
各タプルにおける,バージョンの全順序のこと.
If a $ x is a data item, a version order for $ x is any nonreflexive and total ordering of all versions of $ x that are written by operations in $ m. A version order $ \ll for $ mis the union of all version orders of data items written by operations in $ m.
あるタプルについてのVersionの全順序を順序集合として,その合併集合(union)を$ \llと書く...?
順序集合とは言っていないので,厳密には「そのような概念」としか思えない.
この$ \llは,Weikum本やCC本ではunionとしても順序性の比較演算子としても使われている. とても分かりづらい.私は$ \llをunionとして,順序性は$ <_vで比較することとする.
Given a log $ L and data item $ x, a version order for $ x is any (nonreflexive) total order over all of the versions of $ x written in $ L.
A version order, $ \ll, for $ L is the union of the version orders for all data items.
Given $ L and a version order $ \ll, the multiversion serialization graph, $ MVSG(L, \ll) is $ SG(L)with the following edges added:
(1) for each $ r_j(x_j)and$ w_i(x_i)in $ L, $ k \ne i, if $ x_i \ll x_jthen include $ T_i \to T_j, else include $ T_k \to T_i.
基本的にCSRのプロトコルであれば,「読込みも書込みも最後のVersionOrderを採る」とすればよい. 重要な示唆として,Version Orderは検証のときに決めればいいというものがある.
CSRやMCSRのプロトコルでは,基本的に,Version Orderは実行時に決めるので,生成されたヒストリに対して一意に定まる. ロック順とか,タイムスタンプとか.
しかし,MVSRを満たすためには,MVSGがAcyclicになるVersion Orderの組み合わせが存在するかという問題が解ければ良い.